package br.com.vantagensaki.utils;

import br.com.vantagensaki.constants.Constantes;
import br.com.vantagensaki.controller.SessaoDoUsuario;
import br.com.vantagensaki.utils.resource.ResourceUtils;
import java.io.Serializable;
import java.util.Locale;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
//import org.jboss.seam.Component;
//import org.jboss.seam.faces.FacesMessages;

public class BaseController implements Serializable{

    private static final long serialVersionUID = 1L;
    
    protected Logger logger;
    public static final String PAGINA_HOME = "/privado/home.uff";
    protected SessaoDoUsuario sessaoCorrente;
    /**
     * Nome do logger desejado
     */
    public BaseController(final Class classDoLogger) {
        logger = Logger.getLogger(classDoLogger);
//        sessaoCorrente = (SessaoDoUsuario) Component.getInstance(SessaoDoUsuario.class);
    }

    /**
     * Retorna o contexto JSF
     */
    protected FacesContext getContexto() {
        return FacesContext.getCurrentInstance();
    }

    protected void fatal(final String message) {
//        FacesMessages.instance().add(FacesMessage.SEVERITY_FATAL, message);
    }

    protected void error(final String message) {
//        FacesMessages.instance().add(FacesMessage.SEVERITY_ERROR, message);
    }

    protected void info(final String message) {
//        FacesMessages.instance().add(FacesMessage.SEVERITY_INFO, message);
    }

    protected void warn(final String message) {
//        FacesMessages.instance().add(FacesMessage.SEVERITY_WARN, message);
    }

    /**
     * Recupera a mensagem do arquivo de mensagens
     * @param key - nome que referencia a mensagem
     * @return - mensagem do arquivo de mensagens referenciada pela key
     */
    protected String getMensagemBundled(String key) {
        return ResourceUtils.getMessageResourceString(Constantes.CAMINHO_BUNDLE_MB, key, null, new Locale("pt-BR"));
    }

    /**
     * Recupera a mensagem do arquivo de mensagens inserindo o argumento informado
     * @param key - nome que referencia a mensagem
     * @param argumento - parametro a ser inserido na mensagem
     * @return - mensagem do arquivo de mensagens referenciada pela key e com o parametro inserido
     */
    protected String getMensagemBundledComUmArgumento(String key, String argumento) {
        return ResourceUtils.getMessageResourceString(Constantes.CAMINHO_BUNDLE_MB, key, new Object[] {argumento}, new Locale("pt-BR"));
    }

    protected String getMensagemBundledComArgumentos(String key, Object[] argumentos) {
        return ResourceUtils.getMessageResourceString(Constantes.CAMINHO_BUNDLE_MB, key, argumentos, new Locale("pt-BR"));
    }

    /**
     * Envia como erro na tela a mensagem do arquivo de mensagens referenciada pela key informada
     * @param key - nome que referencia a mensagem
     */
    protected void errorBundle(final String key) {
//        FacesMessages.instance().add(FacesMessage.SEVERITY_ERROR, getMensagemBundled(key));
    }

    /**
     * Envia como informacao na tela a mensagem do arquivo de mensagens referenciada pela key informada
     * @param key - nome que referencia a mensagem
     */
    protected void infoBundle(final String key) {
//        FacesMessages.instance().add(FacesMessage.SEVERITY_INFO, getMensagemBundled(key));
    }
}
